home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / FixMath.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  3.6 KB  |  127 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        FixMath.mod
  3.  
  4.      Contains:    Types.Fixed Math Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE FixMath;
  23.  
  24. IMPORT SYSTEM, Types;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29.  
  30. CONST
  31.     fixed1*                        = $00010000;
  32.     fract1*                        = $40000000;
  33.     positiveInfinity*            = $7FFFFFFF;
  34.     negativeInfinity*            = $80000000;
  35.  
  36.  
  37. PROCEDURE Fix2Frac*(x: Types.Fixed): Types.Fract;
  38.     (*$IF NOT GENERATINGCFM*)
  39.     INLINE PASCAL $A841;
  40.     (*$END*)
  41. PROCEDURE Fix2Long*(x: Types.Fixed): LONGINT;
  42.     (*$IF NOT GENERATINGCFM*)
  43.     INLINE PASCAL $A840;
  44.     (*$END*)
  45. PROCEDURE Long2Fix*(x: LONGINT): Types.Fixed;
  46.     (*$IF NOT GENERATINGCFM*)
  47.     INLINE PASCAL $A83F;
  48.     (*$END*)
  49. PROCEDURE Frac2Fix*(x: Types.Fract): Types.Fixed;
  50.     (*$IF NOT GENERATINGCFM*)
  51.     INLINE PASCAL $A842;
  52.     (*$END*)
  53. PROCEDURE FracMul*(x: Types.Fract; y: Types.Fract): Types.Fract;
  54.     (*$IF NOT GENERATINGCFM*)
  55.     INLINE PASCAL $A84A;
  56.     (*$END*)
  57. PROCEDURE FixDiv*(x: Types.Fixed; y: Types.Fixed): Types.Fixed;
  58.     (*$IF NOT GENERATINGCFM*)
  59.     INLINE PASCAL $A84D;
  60.     (*$END*)
  61. PROCEDURE FracDiv*(x: Types.Fract; y: Types.Fract): Types.Fract;
  62.     (*$IF NOT GENERATINGCFM*)
  63.     INLINE PASCAL $A84B;
  64.     (*$END*)
  65. PROCEDURE FracSqrt*(x: Types.Fract): Types.Fract;
  66.     (*$IF NOT GENERATINGCFM*)
  67.     INLINE PASCAL $A849;
  68.     (*$END*)
  69. PROCEDURE FracSin*(x: Types.Fixed): Types.Fract;
  70.     (*$IF NOT GENERATINGCFM*)
  71.     INLINE PASCAL $A848;
  72.     (*$END*)
  73. PROCEDURE FracCos*(x: Types.Fixed): Types.Fract;
  74.     (*$IF NOT GENERATINGCFM*)
  75.     INLINE PASCAL $A847;
  76.     (*$END*)
  77. PROCEDURE FixATan2*(x: LONGINT; y: LONGINT): Types.Fixed;
  78.     (*$IF NOT GENERATINGCFM*)
  79.     INLINE PASCAL $A818;
  80.     (*$END*)
  81. (*$IF GENERATINGPOWERPC *)
  82. PROCEDURE WideAdd*(VAR target: wide; (*CONST*)VAR source: wide): WidePtr; C;
  83. PROCEDURE WideCompare*((*CONST*)VAR target: wide; (*CONST*)VAR source: wide): INTEGER; C;
  84. PROCEDURE WideNegate*(VAR target: wide): WidePtr; C;
  85. PROCEDURE WideShift*(VAR target: wide; shift: LONGINT): WidePtr; C;
  86. PROCEDURE WideSquareRoot*((*CONST*)VAR source: wide): LONGINT; C;
  87. PROCEDURE WideSubtract*(VAR target: wide; (*CONST*)VAR source: wide): WidePtr; C;
  88. PROCEDURE WideMultiply*(multiplicand: LONGINT; multiplier: LONGINT; VAR target: wide): WidePtr; C;
  89. (* returns the quotient *)
  90. PROCEDURE WideDivide*((*CONST*)VAR dividend: wide; divisor: LONGINT; VAR remainder: LONGINT): LONGINT; C;
  91. (* quotient replaces dividend *)
  92. PROCEDURE WideWideDivide*(VAR dividend: wide; divisor: LONGINT; VAR remainder: LONGINT): WidePtr; C;
  93. PROCEDURE WideBitShift*(VAR src: wide; shift: LONGINT): WidePtr; C;
  94. (*$END*)
  95. (*$IF GENERATING68K AND NOT GENERATING68881 *)
  96. (*•• PROCEDURE Frac2X*(x: Types.Fract): Types.double_t;
  97.     (*$IF NOT GENERATINGCFM*)
  98.     INLINE PASCAL $A845;
  99.     (*$END*)
  100. PROCEDURE Fix2X*(x: Types.Fixed): double_t;
  101.     (*$IF NOT GENERATINGCFM*)
  102.     INLINE PASCAL $A843;
  103.     (*$END*)*)
  104. (*•• PROCEDURE X2Fix*(x: Types.double_t): Types.Fixed;
  105.     (*$IF NOT GENERATINGCFM*)
  106.     INLINE PASCAL $A844;
  107.     (*$END*)*)
  108. (*•• PROCEDURE X2Frac*(x: Types.double_t): Types.Fract;
  109.     (*$IF NOT GENERATINGCFM*)
  110.     INLINE PASCAL $A846;
  111.     (*$END*)*)
  112. (*$ELSE*)
  113. PROCEDURE Frac2X*(x: Types.Fract): double_t;
  114.     EXTERNAL PASCAL;
  115. PROCEDURE Fix2X*(x: Types.Fixed): double_t;
  116.     EXTERNAL PASCAL;
  117. PROCEDURE X2Fix*(x: double_t): Types.Fixed;
  118.     EXTERNAL PASCAL;
  119. PROCEDURE X2Frac*(x: double_t): Types.Fract;
  120.     EXTERNAL PASCAL;
  121. (*$END*)
  122.  
  123. (* $ALIGN RESET*)
  124. (* $POP*)
  125.  
  126.  END FixMath.
  127.